﻿#pragma once
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <windows.h>
#include <stdbool.h>
#include <time.h>
#define WALL L'▢'
#define BODY L'●'
#define FOOD L'★'
//蛇默认的起始坐标
#define POS_X 24;
#define POS_Y 5;
#define KEY_PRESS(VK)((GetAsyncKeyState(VK)& 0*1)?1:0)


//游戏状态
enum GAME_STATUS
{
	OK,
	ESC,
	KILL_BY_WALL,
	KILL_BY_SELF

};
//蛇行走的方向
enum DIRECTION
{
	UP=1,
	DOWN,
	RIGHT,
	LEFT
};

//蛇身节点的定义
typedef struct SnakeNode
{
	int x;
	int y;
	struct SnakeNode* next;

}SnakeNode,*pSnakeNode;
//相当于，typedef struct SnakeNode * pSnakeNode;

//贪吃蛇，整个游戏的维护
 typedef struct Snake
{
	pSnakeNode pSnake;//维护整条蛇的指针
	pSnakeNode pFood;//指向食物的指针
	int Score;//当前累计的分数
	int FoodWeight;  //一个食物的分数
	int SleepTime;  //蛇休眠的时间，休眠的时间越短，速度越快
	enum GAME_STATUS status;//游戏当前的状态
	enum DIRECTION dir;//蛇当前走的方向

}Snake,*pSnake;
 //游戏开始前的准备
 void GameStart(pSnake ps);
 //欢迎界面
 void WelcomeToGame();
 //绘制地图
 void CreatMap();
 //初始化贪吃蛇
 void InitSnake(pSnake ps);
 //创建食物
 void CreatFood(pSnake ps);
 
 //游戏运行的整个逻辑
 void GameRun(pSnake ps);